import { autoUpdater } from 'electron-updater'
import { ipcMain } from 'electron'

let mainWindow = null
let globalSettings
// 给渲染进程发送消息
function sendUpdateMessage (text) {
  mainWindow.webContents.send('message', text)
}

export function upgradeAutoUpdaterHandle (feedUrl) {
  autoUpdater.setFeedURL(feedUrl)
  autoUpdater.checkForUpdates()
}

export function initAutoUpdaterHandle (window, settings, feedUrl) {
  mainWindow = window
  globalSettings = settings
  // 设置更新包的地址
  autoUpdater.setFeedURL(feedUrl)
  autoUpdater.on('error', (error) => {
    sendUpdateMessage({
      cmd: 'error',
      message: error
    })
  })
  // 监听开始检测更新事件
  autoUpdater.on('checking-for-update', (message) => {
    sendUpdateMessage({
      cmd: 'checking-for-update',
      message
    })
  })
  // 监听发现可用更新事件
  autoUpdater.on('update-available', (message) => {
    sendUpdateMessage({
      cmd: 'update-available',
      message
    })
  })
  // 监听没有可用更新事件
  autoUpdater.on('update-not-available', (message) => {
    sendUpdateMessage({
      cmd: 'update-not-available',
      message
    })
  })

  // 更新下载进度事件
  autoUpdater.on('download-progress', (progressObj) => {
    sendUpdateMessage({
      cmd: 'download-progress',
      message: progressObj
    })
  })
  // 监听下载完成事件
  autoUpdater.on('update-downloaded', (event, releaseNotes, releaseName, releaseDate, updateUrl, quitAndUpdate) => {
    sendUpdateMessage({
      cmd: 'update-downloaded',
      message: {
        releaseNotes,
        releaseName,
        releaseDate,
        updateUrl,
        quitAndUpdate
      }
    })
  })

  // 开始更新安装
  ipcMain.on('upgradeVersion', () => {
    globalSettings.willQuitApp = true
    autoUpdater.quitAndInstall()
  })

  if (!globalSettings.isDevelopment) {
    autoUpdater.checkForUpdates()
  }
  // // 接收渲染进程消息，开始检查更新
  // ipcMain.on('checkForUpdate', () => {
  //   // 执行自动更新检查
  //   // sendUpdateMessage({cmd:'checkForUpdate',message:arg})
  //   logger.info('check for update');
  //   autoUpdater.checkForUpdates();
  // });
}
